package com.shuke.medical.insure.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;

/***
 * @title MedicalInsureProperties
 * @description: 医保配置
 * @author woo hua
 * @version 1.0.0
 * @create 2023/3/23 10:00
 **/
@Data
@Component
@ConfigurationProperties(prefix = "chs")
public class ChsProperties {

    /**
     * 在创建账户时自动生成应用编码和密钥（secretKey私钥）
     */
    private String passId;
    /**
     * 在创建账户时自动生成应用编码和密钥（secretKey私钥）
     */
    private String secretKey;
    /**
     * 定点医药机构编号(12)
     */
    private String fixmedinsCode;
    /**
     * 顺序号(4)
     */
    private String sequenceNum;
    /**
     * 参保地医保区划 6
     */
    private String insuplcAdmdvs;
    /**
     * 就医地医保区划 6
     */
    private String mdtrtareaAdmvs;

    /**
     * 签名类型：固定传SM3，示例详见2.9章节
     */
    private String signtype;
    /**
     * 接口版本号：例如：“V1.0”，版本号由医保下发通知。
     */
    private String infver;
    /**
     * 经办人类别：1-经办人；2-自助终端；3-移动终端
     */
    private String opterType;
    /**
     * 接收方系统代码:用于多套系统接入，区分不同系统使用
     */
    private String recerSysCode;
    /**
     * 医保账号信息
     */
    private Account account;
    /**
     * 医保动态配置信息
     */
    private DynamicConfig dynamicConfig;

    /**
     * 医保支付系统配置信息
     */
    private Pay pay;

    @Data
    @RefreshScope
    @Configuration
    public static class Account {
        /**
         * 此账号由医保提供
         */
        private String userid;
        /**
         * 操作员编号 （医生编码）
         */
        private String opterNo;
        /**
         * 操作员名称 （医生名称）
         */
        private String opterName;
        /**
         * 此账号由医保提供
         */
        private String password;
    }

    @Data
    @RefreshScope
    @Configuration
    public static class DynamicConfig {

        private String ip;

        private String mac;

        /**
         * 接口路径
         * 服务网关的地址示例为http://ip:port/isp/ebus/账户编码/服务开放路径，具体ip、端口、账户编码、服务开放路径以现场提供为准。
         * // 如测试环境是ebus/gdyb_inf，生产环境是ebus/gdyb_api
         */
        private String url = "http://10.97.240.206:80/ebus/gdyb_inf/poc/hsa/hgs/gzzq/{suffix}";

        /**
         * 医保字典表等目录下载接口所属的版本号
         */
        private String ver = "1";
    }

    /**
     * 医保支付系统配置信息
     */
    @Data
    @RefreshScope
    @Configuration
    public static class Pay {

        /**
         * 数字密钥
         */
        private String appSecret = "1GR0CDCGQ1NL3F60C80A0000327B15BA";

        /**
         * 应用ID
         */
        private String appId = "1GR0CDCGL1NK3F60C80A0000C2A30CF3";

        /**
         * 渠道公钥
         */
        private String publicKey = "BPTm2GfoS2rzmTMkenyBjGbb1Pidll2rB8mKGbsQg2vLzA2392aDFanI2fzDjGJ6i/jcWIO9Q75Csj6O7B2MHOM=";

        /**
         * 渠道私钥
         */
        private String privateKey = "AO6pnH3NW6PpoDLFYcNfaO/j/asiAl4IOPUEAnkbs+39";

        /**
         * 平台公钥
         */
        private String pubKey = "BFtEW/+CcwoiQCNxW9Nu4f5lNjlJXE+M1i0vod1MGNN7bxJ5+vdZ/MKMH5nwLdALVPk06QHtt+PCCrPMpv9vXSw=";
        /**
         * 请求地址
         * 例：http://ip:port/org/local/api/hos/pay_order(下单地址)
         * http://igb.hsa.gdgov.cn/ebus/gdyb_gj_ydzf//org/local/api/hos/pay_order
         * http://igb.hsa.gdgov.cn/ebus/gdyb_gj_ydzf//org/local/api/hos/pay_order
         * https://igi.hsa.gd.gov.cn/pmc_gj_dev/ydzf_app/org/local/api/hos/uldFeeInfo
         */
        private String reqUrl = "https://igi.hsa.gd.gov.cn/pmc_gj_dev/ydzf_app/org/local/api/hos/{suffix}";

        private String version = "2.0.1";

        /**
         * 跳过验签只适合测试联调，正式上线最好完成验签。验签失败，请咨询微信医保⽀付开发同学
         */
        private Boolean skipVerify = false;
    }
}
